﻿//创建控制器action
Ext.regController('NotesController', {
    'index': function (options) {//首页控制action
        if (!NotesApp.views.mainView) {//mainview是否存在，不存在new一个新的
            NotesApp.views.mainView = new NotesApp.views.MainView();
        }
        NotesApp.views.mainView.setActiveItem(
            NotesApp.views.notesListView//设置mainview显示列表视图
        );
    },
    'newnote': function (options) {//new按钮点击跳转action
        var now = new Date();
        var noteId = now.getTime();//得到的时间数值作为id
        var note = Ext.ModelMgr.create({ id: noteId, date: now, title: '', narrative: '' },
            'NoteModel'
        );//创建一个空的note对象
        NotesApp.views.noteEditorView.load(note);//编辑视图formpanel载入此note对象
        NotesApp.views.mainView.setActiveItem(//设置mainview显示编辑视图，动画效果从右往左
            NotesApp.views.noteEditorView,
            { type: 'slide', direction: 'left' }
        );
    },
    'editnote': function (options) {//点击某条记录跳转到此记录编辑视图action
        NotesApp.views.noteEditorView.load(options.note);//编辑formpanel载入此note对象
        NotesApp.views.mainView.setActiveItem(//设置mainview显示编辑视图，动画效果从右往左
            NotesApp.views.noteEditorView,
            { type: 'slide', direction: 'left' }
        );
    },
    'savenote': function (options) {//点击保存按钮跳转到列表视图action
        var currentNote = NotesApp.views.noteEditorView.getRecord();//得到编辑formpanel对应的note类(不包含用户输入数据)
        NotesApp.views.noteEditorView.updateRecord(currentNote);//把formpanel用户输入的记录放入currentNote类中
        var errors = currentNote.validate();//校验用户输入
        if (!errors.isValid()) {//校验失败，弹出提示
            Ext.Msg.alert('Wait!', errors.getByField('title')[0].message, Ext.emptyFn);
            return;
        }
        if (null == NotesApp.stores.notesStore.findRecord('id', currentNote.data.id)) {//查询客户端存储是否存在此记录，无则add
            NotesApp.stores.notesStore.add(currentNote);
        }
        NotesApp.stores.notesStore.sync();//同步客户端存储
        NotesApp.stores.notesStore.sort([{ property: 'date', direction: 'DESC'}]);//按日期排序
        NotesApp.views.notesListView.refreshList();//刷新列表显示
        NotesApp.views.mainView.setActiveItem(//设置mainview显示列表视图，动画效果从左往右
            NotesApp.views.notesListView,
            { type: 'slide', direction: 'right' }
        );
    },
    'deletenote': function (options) {//删除记录action
        var currentNote = NotesApp.views.noteEditorView.getRecord();//得到编辑formpanel对应的note类(不包含用户输入数据)
        if (NotesApp.stores.notesStore.findRecord('id', currentNote.data.id)) {//查找是否存在此记录，存在则删除
            NotesApp.stores.notesStore.remove(currentNote);
        }
        NotesApp.stores.notesStore.sync();//同步客户端存储
        NotesApp.views.notesListView.refreshList();//刷新列表显示
        NotesApp.views.mainView.setActiveItem(//设置mainview显示列表视图，动画效果从左往右
            NotesApp.views.notesListView,
            { type: 'slide', direction: 'right' }
        );
    },
    'canceledit': function (options) {//取消返回列表视图action
        NotesApp.views.mainView.setActiveItem(//设置mainview显示列表视图，动画效果从左往右
            NotesApp.views.notesListView,
            { type: 'slide', direction: 'right' }
        );
    }
});
NotesApp.controllers.notesController = Ext.ControllerManager.get('NotesController');